//package com.zmn.plat.admin.controller.area;
//
//import java.util.*;
//
//import javax.servlet.http.HttpServletRequest;
//
//import com.zmn.common.dto.VtDTO;
//import com.zmn.common.dto2.ResponseDTO;
//import com.zmn.common.utils.collection.CollectionUtil;
//import com.zmn.common.utils.number.NumberUtil;
//import com.zmn.plat.common.util.SimpleSpellUtil;
//import org.springframework.stereotype.Controller;
//import org.springframework.web.bind.annotation.RequestBody;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RequestParam;
//import org.springframework.web.bind.annotation.ResponseBody;
//
//import com.alibaba.fastjson.JSONObject;
//import com.zmn.common.constant.GlobalConsts;
//import com.zmn.common.constant.StatusConsts;
//import com.zmn.common.dto.ResultDTO;
//import com.zmn.common.utils.date.DateUtil;
//import com.zmn.common.utils.string.InitialUtil;
//import com.zmn.common.utils.string.StringUtil;
//import com.zmn.plat.common.constant.BaseAreaConsts;
//import com.zmn.plat.manager.dictionary.ProductDict;
//import com.zmn.plat.model.entity.area.BaseArea;
//
///**
// * @author duanzuocai
// * @version v1.0
// * @modifier tanbiao 20190909 新增状态修改和排序修改字方法
// * @since 2018/11/1 9:32
// */
//@Controller
//@RequestMapping("/area/")
//public class AreaModifyController extends AreaBaseController {
//
//    private static final Integer MAX_SIMPLE_SPELL_LENGTH = 10;
//
//    private static final Integer MAX_BATCH_GROUP = 500;
//
//    /**
//     * region 新增/修改
//     *
//     * @param request
//     * @param area
//     * @return
//     */
//    @SuppressWarnings("Duplicates")
//    @RequestMapping(value = "addEdit")
//    @ResponseBody
//    public ResponseDTO addEdit(HttpServletRequest request, @RequestBody BaseArea area) {
//        Date now = DateUtil.getNow();
//
//        int areaId = area.getAreaId();
//
//        try {
//            if (areaId == 0) {
//                area.setFirstLetter(InitialUtil.getFristEnName(area.getName()));
//                String simpleSpell = SimpleSpellUtil.parseNameToSimpleSpell(area.getName(),null);
//                area.setSimpleSpell(simpleSpell);
//                area.setCreater(getMcStaffRealName());
//                area.setCreateTime(now);
//                area.setUpdater(getMcStaffRealName());
//                area.setUpdateTime(now);
//                area.setType(1);
//                if (area.getParentId() <= 1) {
//                    area.setParentId(GlobalConsts.TOP_ID);
//                    area.setLevel(BaseAreaConsts.AREA_LEVEL_TWO);
//                } else {
//                    BaseArea parent = areaService.findByKey(area.getParentId());
//                    area.setLevel(parent.getLevel() + 1);
//                }
//                // 默认开启
//                area.setStatus(ProductDict.STATUS_ENABLE);
//                areaBService.insert(area);
//            } else {
//                // 如果是修改区域信息 区域名称改变了则需要系统根据名称更新首字母和简拼
//                BaseArea baseArea = Optional.ofNullable(areaService.findByKey(area.getAreaId())).orElse(new BaseArea());
//                if (!area.getName().equals(baseArea.getName())) {
//                    area.setFirstLetter(InitialUtil.getFristEnName(area.getName()));
//                    String simpleSpell = SimpleSpellUtil.parseNameToSimpleSpell(area.getName(),null);
//                    area.setSimpleSpell(simpleSpell);
//                }
//
//                area.setUpdater(getMcStaffRealName());
//                area.setUpdateTime(now);
//                areaBService.updateByKey(area);
//            }
//
//            return ResponseDTO.success(Integer.toString(area.getAreaId()), "操作成功！");
//        } catch (org.springframework.dao.DuplicateKeyException ex) {
//            logger.error("区域【{}】已经存在，不能重复添加！", area.getName());
//            return ResponseDTO.fail( "区域已经存在，不能重复添加！");
//        } catch (Exception ex) {
//            logger.error(String.format("[zmn]新增/修改区域分类失败,area:[%s],ex:[%s]", JSONObject.toJSONString(area), ex.getMessage()));
//            return  ResponseDTO.fail("操作失败！");
//        }
//    }
//
//    @RequestMapping(value = "updateSort")
//    @ResponseBody
//    public ResponseDTO updateSort(HttpServletRequest request, @RequestParam(value = "id", defaultValue = "0") Integer areaId,
//        @RequestParam(value = "sort", defaultValue = "0") Integer sort) {
//
//        if (areaId == 0) {
//            return ResponseDTO.fail("请选择要更改排序的区域！");
//        }
//        if (sort == 0) {
//            return ResponseDTO.fail("请设置区域排序值！");
//        }
//
//        areaService.updateSortByKey(areaId, sort, getMcStaffRealName());
//        return ResponseDTO.success(StatusConsts.STATUS_SUCCESS,  GlobalConsts.SUCCESS_MSG);
//    }
//
//    @RequestMapping(value = "updateStatus")
//    @ResponseBody
//    public ResponseDTO updateStatus(HttpServletRequest request, @RequestParam(value = "ids", defaultValue = "") String ids,
//        @RequestParam(value = "status", defaultValue = "0") Integer status) {
//        if (StringUtil.isBlank(ids)) {
//            return ResponseDTO.fail("请选择要更改状态的区域！");
//        }
//        if (status == 0) {
//            return ResponseDTO.fail("请设置区域状态！");
//        }
//
//        List<Integer> arrayIds = StringUtil.convertStrsToList(ids);
//
//        areaService.updateStatusBatchByKey(arrayIds, status, getMcStaffRealName());
//        return ResponseDTO.success(StatusConsts.STATUS_SUCCESS, GlobalConsts.SUCCESS_MSG);
//    }
//
//    @RequestMapping(value = "updateFirstLetter")
//    @ResponseBody
//    public ResponseDTO updateFirstLetter(@RequestParam(value = "id", defaultValue = "0") Integer areaId,
//                                         @RequestParam(value = "firstLetter", defaultValue = "") String firstLetter) {
//
//        if (NumberUtil.isNullOrZero(areaId)) {
//            return ResponseDTO.fail("请选择要更改首字母的区域！");
//        }
//        if (StringUtil.isBlank(firstLetter)) {
//            return ResponseDTO.fail("请设置区域首字母！");
//        }
//        areaService.updateFirstLetterByKey(areaId, firstLetter, getMcStaffRealName());
//        return ResponseDTO.success(true,"操作成功！");
//    }
//
//    @RequestMapping(value = "updateSimpleSpell")
//    @ResponseBody
//    public ResponseDTO updateSimpleSpell(@RequestParam(value = "id", defaultValue = "0") Integer areaId,
//                                         @RequestParam(value = "simpleSpell", defaultValue = "") String simpleSpell) {
//
//        if (NumberUtil.isNullOrZero(areaId)) {
//            return ResponseDTO.fail("请选择要更改简拼的区域！");
//        }
//        if (StringUtil.isBlank(simpleSpell)) {
//            return ResponseDTO.fail("请设置区域名称简拼！");
//        }
//        areaService.updateSimpleSpellByKey(areaId, simpleSpell.toUpperCase(), getMcStaffRealName());
//        return ResponseDTO.success(true,"操作成功！");
//    }
//
//    /**
//     * 初始化区域首字母和简拼
//     * @return
//     */
//    @RequestMapping(value = "/initFirstLetterAndSimpleSpell")
//    @ResponseBody
//    public ResponseDTO initFirstLetterAndSimpleSpell() {
//        List<VtDTO> allAreas = areaService.listAllVtDto();
//        Integer counter = 0;
//        List<BaseArea> batchAreaList = new ArrayList<>(MAX_BATCH_GROUP);
//
//        for (VtDTO inner: allAreas) {
//            if (StringUtil.isNotBlank(inner.getText())) {
//                counter++;
//                BaseArea baseArea = new BaseArea();
//                baseArea.setAreaId(inner.getValue());
//                baseArea.setFirstLetter(InitialUtil.getFristEnName(inner.getText()));
//
//                String simpleSpell = SimpleSpellUtil.parseNameToSimpleSpell(inner.getText(),null);
//                baseArea.setSimpleSpell(simpleSpell);
//                batchAreaList.add(baseArea);
//            }
//
//            if (Objects.equals(MAX_BATCH_GROUP, counter)) {
//                areaService.updateFirstLetterAndSimpleSpellByKeyBatch(batchAreaList);
//                batchAreaList = new ArrayList<>(MAX_BATCH_GROUP);
//                counter = 0;
//            }
//        }
//
//        if (!Objects.equals(0, counter)) {
//            if (CollectionUtil.isNotNullOrEmpty(batchAreaList)) {
//                areaService.updateFirstLetterAndSimpleSpellByKeyBatch(batchAreaList);
//            }
//        }
//
//        return ResponseDTO.success(true,"初始化区域首字母和简拼成功");
//    }
//}
